# coding=utf-8

import edge_tts

TEXT = '''
计算机存储的最小存储单位是 bit（比特、二进制位）表示，俗称小 b。 计算机数据存储的最基本和常用单位是 Byte（字节），俗称大 B。 一个字节是 8 位，2 的八次方是 256。 二进制数的数值范围是 0 到 1，八进制是 0 到 7，十六进制是 0 到 F。 二进制八个 1 转成十进制数是 2 的八次方减 1 等于 255。 计算机中任何信息的存储、处理和传送的形式都是二进制。 一个英文字符在微型机中存储时占 1 字节，汉字占 2 字节。

计算机的发展经历了从电子管、晶体管、中小规模集成电路、大规模超大规模集成电路作为主要电子元件的四代变迁。 计算机的特点有运算速度快，有记忆能力，有逻辑判断能力。而不具备形象思维能力。 计算机可以算出一个城市的所有电话号码，充分体现了计算机具有记忆功能。

计算机的应用领域从最早的科学计算开始，发展为过程监测与控制、信息管理、计算机辅助系统。 CAD 是计算机辅助设计，CAT 计算机辅助测试，CAM 计算机辅助制造，CAE 辅助工程，CAI 辅助教学。

计算机系统分为硬件和软件，其中软件包括应用软件和系统软件。 系统软件用于提供和管理计算机资源，包括操作系统和数据库管理系统，编译程序和标准程序库、系统诊断软件、语言处理程序、数据库软件。 应用软件用于解决特定领域问题，包括 Office 软件、图形图像编辑软件。其实只要是非系统软件都是应用软件。 学生管理软件、财务管理软件、工程制图软件、财务管理软件都属于应用软件。

十进制转成其他进制，整数部分用除 k 取余法，小数部分则用乘 k 取整法。

目前计算机中应用最普遍的字符编码是 ASCII 码。 大写 A 的 ASCII 码是 65，小写 a 是 97，数字 0 到 9 分别是 48 到 57。

计算机能够识别和直接执行的语言是机器语言。 计算机只能识别机器语言，包括了通用的 7 或 8 位 拓展 ASCII 码。

计算机中能够对汉字信息进行存储、交换和检索等操作的是机内码。 汉字存储包括字形码存储和机内码存储。

冯诺依曼是与计算机的发展直接相关的标志性人物。对计算机的主要贡献有二进制思想、存储程序、程序控制。 冯诺依曼体系结构基本组成部分的是运算器、控制器、存储器。 冯诺依曼机最主要的工作特点是存储程序和自动控制。

计算机的运算器、控制器及内存的总称是主机。 长城 386 微型计算机的 386 是指 CPU 型号为 80863。 U 盘的优点是体积小、防潮、即用即插、容量大，属于外存储器，不能与 CPU 直接交换数据。 在 CPU 和内存之间增加 cache 的目的是解决 CPU 和内存之间速度不匹配的问题。

计算机与计算机相比最大的区别是计算机能存储并执行程序。

计算机语言层次由低到高分别是机器语言，汇编语言和高级语言，basic、C、c++、java、python 都是高级语言。

影响计算机运行速度的因素主要包括了 CPU 的主频以及内存的存取周期。与显示器屏幕大小无关。

量子计算机的优点的有并行计算、存储能力大大提高、能耗低。

从市场产品来看，计算机大致可以分为大型计算机、微机（微型计算机）和嵌入式系统三类。 属于大型计算机的有超级计算机、大型集群计算机、大型服务器。 属于微型计算机的有 PC 服务器、笔记本电脑。 将微机或某个微机核心部件安装在某个专用设备之内，这样的系统称为嵌入式系统。属于嵌入式系统的有工业控制 PC、自动柜员机(电子收款机)POS。

用计算机对数据进行采集、存储、检索、加工、变换和传输，是计算机在信息管理方面的应用。

摩尔定律主要内容是指，微型片上集成的晶体管数目每 18 个月翻一番。

计算机科学是建立在数学的基础上。 用计算机对生产过程进行控制，是计算机在过程控制方面的应用。

一个完整的计算机系统由硬件系统与软件系统组成。

微型计算机系统通常是由运算器、控制器、存储器和 I/O 设备等几部分组成的。 微机硬件系统分为主机和外部设备两大部分。 主机由运算器、存储器和控制器组成。 微型计算机主机由微处理器、内部存储器、接口电路和总线组成。 主（内）存储器是具有记忆功能的部件，不属于计算机外部设备。 具有记忆功能的部件有寄存器、内存、硬盘、光盘。 计算机的外设主要包含了外部存储器和输入设备、输出设备。 键盘、鼠标、手柄属于输入设备 显示器、打印机、绘图仪属于输出设备 硬盘、光盘都属于外存。

美国宾夕法尼亚大学 1946 年研制成功的一台大型通用数字电子计算机，名称是 ENIAC。 第一台实现存储程序的计算机的名称是 EDVAC。

决定计算机运算速度的两大部件是 CPU 和内存。

计算机中最重要的核心部件是 CPU。 CPU 微处理器由控制器、运算器和寄存器组成。 CPU 可以直接访问的部件有 cache 和内存。 PC 机启动后是 CPU 从内存中取出第一条指令。

DRAM（动态随机存取存储器）基于电容存储，需定期刷新。容量大，集成度高。功耗相对较低。
SRAM（静态随机存取存储器）利用双稳态触发器存储，无需刷新。容量小，集成度低 功耗相对较高。 系统电源关闭后，RAM 为随机存取存储器，信息会丢失。

大型集群计算机技术是利用许多台单独的计算机组成的一个计算机系统，该系统能够像一台机器那样工作。

属于未来新型计算机的有量子计算机、生物计算机、光子计算机。 量子计算机的优点的有并行计算、能耗低、存储能力大大提高。

从功能上看，现代计算机系统可分为 5 个层次级别，从高到低依次是：高级语言层、汇编语言层、操作系统层、机器语言层和微程序层。 计算机操作系统及系统软件开发人员工作在操作系统层。 处于最底层的是微程序层在计算机系统中起到了桥梁的作用，将高级语言和机器语言指令转换为具体的硬件操作，确保计算机系统高效运行。

指令由操作码和操作数组成。

计算思维的概念是由美国卡内基梅隆大学计算机科学系主任周以真提出。 计算思维的本质是对求解问题的抽象和实现问题处理的自动化。 计算思维是一种基础技能，对于现代社会的每个人都是必要的。 它不是要让人类像计算机一样思考，而是利用计算思维来解决复杂问题。 计算机思维特点的是概念化的，不是程序化的；是基本的，不是机械式的；是人的思维方式，不是机器的思维方式；是思想，不是人造品。

杀毒软件能够发现病毒入侵的迹象，并及时清除或者提醒用户。
'''

VOICE = "zh-CN-XiaoxiaoNeural"
OUTPUT_FILE = "test.mp3"
SRT_FILE = "test.srt"


def main() -> None:
    """Main function"""
    communicate = edge_tts.Communicate(TEXT, VOICE)
    submaker = edge_tts.SubMaker()
    with open(OUTPUT_FILE, "wb") as file:
        for chunk in communicate.stream_sync():
            if chunk["type"] == "audio":
                file.write(chunk["data"])
            elif chunk["type"] == "WordBoundary":
                submaker.feed(chunk)

    with open(SRT_FILE, "w", encoding="utf-8") as file:
        file.write(submaker.get_srt())


if __name__ == "__main__":
    main()
